#include "my_inc/main_login.h"
#include "my_inc/main_face.h"

// 主界面
void main_face(face_p head)
{
    face_p temp         = faceinsertend(head, "主界面");
    lv_obj_t * img_main = lv_img_create(temp->screen);
    lv_img_set_src(img_main, "A:img/main_face.png");
    lv_obj_set_size(img_main, 800, 480);

    // 定义网格列和行的尺寸数组
    static lv_coord_t col_dsc[] = {180, 180, 180, 180, LV_GRID_TEMPLATE_LAST}; // col_dsc: 定义4列，每列宽度70像素
    static lv_coord_t row_dsc[] = {180, 180, 65, LV_GRID_TEMPLATE_LAST};       // row_dsc: 定义2行，每行高度50像素
    lv_obj_t * cont             = lv_obj_create(temp->screen);                 // 创建容器对象
    lv_obj_clear_flag(cont, LV_OBJ_FLAG_SCROLLABLE);                           // ⭐️ 关键代码：禁用滚动
    lv_obj_set_style_bg_color(cont, lv_color_hex(0xFFFFFF), LV_PART_MAIN);     // 设置背景色
    lv_obj_set_style_bg_opa(cont, LV_OPA_0, LV_PART_MAIN);                     // 只设置背景的透明度
    lv_obj_set_style_grid_column_dsc_array(cont, col_dsc, 0);                  // 设置列和行的尺寸数组
    lv_obj_set_style_grid_row_dsc_array(cont, row_dsc, 0);                     // 设置列和行的尺寸数组
    lv_obj_set_size(cont, 800, 480);                                           // 设置容器大小(800x440)
    lv_obj_align(cont, LV_ALIGN_TOP_MID, 0, 0);
    lv_obj_set_layout(cont, LV_LAYOUT_GRID); // 设置布局为网格布局 LV_LAYOUT_GRID

    // 创建按钮并放置到网格
    lv_obj_t * btn_music = lv_btn_create(cont);                 // lv_btn_create(cont): 在容器中创建按钮
    lv_obj_set_style_bg_opa(btn_music, LV_OPA_0, LV_PART_MAIN); // 只设置背景的透明度
    lv_obj_set_style_pad_all(btn_music, 0, LV_STATE_DEFAULT);   // 直接设置按钮的内边距为0
    lv_obj_t * img_music = lv_img_create(btn_music);
    lv_img_set_src(img_music, "A:img/music.png");
    lv_obj_center(img_music);
    lv_obj_add_event_cb(btn_music, face_music, LV_EVENT_CLICKED, head); // 添加登录按钮事件

    lv_obj_t * btn_2048 = lv_btn_create(cont);                 // lv_btn_create(cont): 在容器中创建按钮
    lv_obj_set_style_bg_opa(btn_2048, LV_OPA_0, LV_PART_MAIN); // 只设置背景的透明度
    lv_obj_set_style_pad_all(btn_2048, 0, LV_STATE_DEFAULT);   // 直接设置按钮的内边距为0
    lv_obj_t * img_2048 = lv_img_create(btn_2048);
    lv_img_set_src(img_2048, "A:img/2048.png");
    lv_obj_center(img_2048);
    lv_obj_add_event_cb(btn_2048, face_2048, LV_EVENT_CLICKED, head); // 添加登录按钮事件

    lv_obj_t * btn_tic = lv_btn_create(cont);                 // lv_btn_create(cont): 在容器中创建按钮
    lv_obj_set_style_bg_opa(btn_tic, LV_OPA_0, LV_PART_MAIN); // 只设置背景的透明度
    lv_obj_set_style_pad_all(btn_tic, 0, LV_STATE_DEFAULT);   // 直接设置按钮的内边距为0
    lv_obj_t * img_tic = lv_img_create(btn_tic);
    lv_img_set_src(img_tic, "A:img/tic.png");
    lv_obj_center(img_tic);
    lv_obj_add_event_cb(btn_tic, face_tic, LV_EVENT_CLICKED, head); // 添加登录按钮事件

    lv_obj_t * btn_photos = lv_btn_create(cont);                 // lv_btn_create(cont): 在容器中创建按钮
    lv_obj_set_style_bg_opa(btn_photos, LV_OPA_0, LV_PART_MAIN); // 只设置背景的透明度
    lv_obj_set_style_pad_all(btn_photos, 0, LV_STATE_DEFAULT);   // 直接设置按钮的内边距为0
    lv_obj_t * img_photos = lv_img_create(btn_photos);
    lv_img_set_src(img_photos, "A:img/photos.png");
    lv_obj_center(img_photos);
    lv_obj_add_event_cb(btn_photos, face_pho, LV_EVENT_CLICKED, head); // 添加登录按钮事件

    // lv_obj_t * btn_1 = lv_btn_create(cont);
    // lv_obj_set_style_bg_opa(btn_1, LV_OPA_0, LV_PART_MAIN); // 只设置背景的透明度
    // lv_obj_set_style_pad_all(btn_1, 0, LV_STATE_DEFAULT);   // 直接设置按钮的内边距为0
    // lv_obj_t * img_cal = lv_img_create(btn_1);
    // lv_img_set_src(img_cal, "A:img/calculator.png");
    // lv_obj_center(img_cal);

    // lv_obj_t * btn_2 = lv_btn_create(cont);
    // lv_obj_set_style_bg_opa(btn_2, LV_OPA_0, LV_PART_MAIN); // 只设置背景的透明度
    // lv_obj_set_style_pad_all(btn_2, 0, LV_STATE_DEFAULT);   // 直接设置按钮的内边距为0
    // lv_obj_t * img_set = lv_img_create(btn_2);
    // lv_img_set_src(img_set, "A:img/set.png");
    // lv_obj_center(img_set);

    // lv_obj_t * btn_3 = lv_btn_create(cont);
    // lv_obj_set_style_bg_opa(btn_3, LV_OPA_0, LV_PART_MAIN); // 只设置背景的透明度
    // lv_obj_set_style_pad_all(btn_3, 0, LV_STATE_DEFAULT);   // 直接设置按钮的内边距为0
    // lv_obj_t * img_off = lv_img_create(btn_3);
    // lv_img_set_src(img_off, "A:img/off.png");
    // lv_obj_center(img_off);

    // lv_obj_t * btn_4 = lv_btn_create(cont);
    // lv_obj_set_style_bg_opa(btn_4, LV_OPA_0, LV_PART_MAIN); // 只设置背景的透明度
    // lv_obj_set_style_pad_all(btn_4, 0, LV_STATE_DEFAULT);   // 直接设置按钮的内边距为0
    // lv_obj_t * img_draw = lv_img_create(btn_4);
    // lv_img_set_src(img_draw, "A:img/draw.png");
    // lv_obj_center(img_draw);

    lv_obj_t * btn[4] = {btn_music, btn_2048, btn_tic, btn_photos};
    // lv_obj_set_grid_cell(): 将按钮放置到网格的特定位置
    // LV_GRID_ALIGN_STRETCH: 按钮会拉伸填满整个单元格
    // col, 1: 从第col列开始，占据1列
    // row, 1: 从第row行开始，占据1行

    for(size_t col = 0; col < 4; col++) { // 每行4列
        // 计算按钮索引：row=0时为0-3，row=1时为4-7
        lv_obj_set_grid_cell(btn[col], LV_GRID_ALIGN_STRETCH, col, 1, // 列：当前列，跨度1
                             LV_GRID_ALIGN_STRETCH, 1, 1              // 行：当前行，跨度1
        );
    }

    lv_obj_t * obj_time = lv_obj_create(cont);
    lv_obj_set_grid_cell(obj_time, LV_GRID_ALIGN_STRETCH, 0, 4, LV_GRID_ALIGN_STRETCH, 0, 1);
    lv_obj_set_style_bg_opa(obj_time, LV_OPA_0, LV_PART_MAIN);     // 只设置背景的透明度
    lv_obj_set_style_pad_all(obj_time, 0, LV_PART_MAIN);           // 去掉默认的内补 20
    lv_obj_set_style_border_opa(obj_time, LV_OPA_0, LV_PART_MAIN); // 保留边框可见
    lv_obj_t * label_time = lv_label_create(obj_time);
    lv_obj_set_style_text_font(label_time, &lv_font_montserrat_48, LV_PART_MAIN);
    lv_obj_align(label_time, LV_ALIGN_CENTER, 0, 0);
    if(timer) {
        lv_timer_del(timer); // 删除LVGL定时器
        timer = NULL;        // 将指针置空，避免悬空指针
    }
    // 创建游戏更新定时器（每100ms检查一次）
    timer = lv_timer_create(update_time_label, 1000, label_time); // 每秒更新
    lv_timer_set_repeat_count(timer, -1);                    // 无限重复

    lv_obj_t * obj = lv_obj_create(cont);
    lv_obj_set_style_pad_all(obj, 0, LV_PART_MAIN); // 去掉默认的内补 20
    lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 0, 4, LV_GRID_ALIGN_STRETCH, 2, 1);
    lv_obj_set_style_bg_color(cont, lv_color_hex(0xFFFFFF), LV_PART_MAIN); // 设置背景色
    lv_obj_set_style_bg_opa(obj, LV_OPA_30, LV_PART_MAIN);                 // 只设置背景的透明度

    lv_obj_t * btn_home = lv_btn_create(obj);
    lv_obj_center(btn_home);
    lv_obj_t * home = lv_label_create(btn_home);
    lv_label_set_text(home, LV_SYMBOL_HOME);

    lv_obj_t * btn_close = lv_btn_create(obj);
    lv_obj_align(btn_close, LV_ALIGN_RIGHT_MID, -100, 0);
    lv_obj_t * close = lv_label_create(btn_close);
    lv_label_set_text(close, LV_SYMBOL_REFRESH);
    lv_obj_add_event_cb(btn_close, face_close, LV_EVENT_CLICKED, head); // 添加关机按钮事件

    lv_obj_t * btn_return = lv_btn_create(obj);
    lv_obj_align(btn_return, LV_ALIGN_LEFT_MID, 100, 0);
    lv_obj_t * label_return = lv_label_create(btn_return);
    lv_label_set_text(label_return, LV_SYMBOL_LEFT);
    lv_obj_add_event_cb(btn_return, face_return, LV_EVENT_CLICKED, head); // 添加登录按钮事件
}

